bitkeeper revision 1.1062.3.3 (40f2a968LOQj8mvu9q6Hipqs_GOEIQ)
authormjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Mon, 12 Jul 2004 15:08:24 +0000 (15:08 +0000)
committermjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Mon, 12 Jul 2004 15:08:24 +0000 (15:08 +0000)
Small fixes.

tools/python/xen/xend/XendMigrate.py
tools/xfrd/xen_domain.c
tools/xfrd/xfrd.c

index f938a9afd2ec4e87fc62ace745120c50d33cbc5a..543c1cbd421f1d57a2bf67ae9773fdc4e335d234 100644 (file)
@@ -50,7 +50,7 @@ class Xfrd(Protocol):
         self.parser.input(data)
         if self.parser.ready():
             val = self.parser.get_val()
-            self.xinfo.dispatch(val)
+            self.xinfo.dispatch(self, val)
         if self.parser.at_eof():
             self.loseConnection()
             
@@ -122,9 +122,9 @@ class XfrdInfo:
         # If we get an error with non-zero code the operation failed.
         # An error with code zero indicates hello success.
         print 'xfr_err>', val
-        v = sxp.child(val)
+        v = sxp.child0(val)
         print 'xfr_err>', type(v), v
-        err = int(sxp.child(val))
+        err = int(sxp.child0(val))
         if not err: return
         self.error(err);
         xfrd.loseConnection()
@@ -169,9 +169,9 @@ class XendMigrateInfo(XfrdInfo):
     """Representation of a migrate in-progress and its interaction with xfrd.
     """
 
-    def __init__(self, id, dom, host, port):
+    def __init__(self, xid, dom, host, port):
         XfrdInfo.__init__(self)
-        self.id = id
+        self.xid = xid
         self.state = 'begin'
         self.src_host = socket.gethostname()
         self.src_dom = dom
@@ -181,7 +181,7 @@ class XendMigrateInfo(XfrdInfo):
         self.start = 0
         
     def sxpr(self):
-        sxpr = ['migrate', ['id', self.id], ['state', self.state] ]
+        sxpr = ['migrate', ['id', self.xid], ['state', self.state] ]
         sxpr_src = ['src', ['host', self.src_host], ['domain', self.src_dom] ]
         sxpr.append(sxpr_src)
         sxpr_dst = ['dst', ['host', self.dst_host] ]
@@ -220,9 +220,9 @@ class XendSaveInfo(XfrdInfo):
     """Representation of a save in-progress and its interaction with xfrd.
     """
     
-    def __init__(self, id, dom, file):
+    def __init__(self, xid, dom, file):
         XfrdInfo.__init__(self)
-        self.id = id
+        self.xid = xid
         self.state = 'begin'
         self.src_dom = dom
         self.file = file
@@ -230,7 +230,7 @@ class XendSaveInfo(XfrdInfo):
         
     def sxpr(self):
         sxpr = ['save',
-                ['id', self.id],
+                ['id', self.xid],
                 ['state', self.state],
                 ['domain', self.src_dom],
                 ['file', self.file] ]
@@ -272,32 +272,33 @@ class XendMigrate:
         self.db = XendDB.XendDB(self.dbpath)
         self.session = {}
         self.session_db = self.db.fetchall("")
-        self.id = 0
+        self.xid = 0
 
     def nextid(self):
-        self.id += 1
-        return "%d" % self.id
+        self.xid += 1
+        return "%d" % self.xid
 
     def sync(self):
         self.db.saveall("", self.session_db)
 
-    def sync_session(self, id):
-        self.db.save(id, self.session_db[id])
+    def sync_session(self, xid):
+        print 'sync_session>', type(xid), xid, self.session_db[xid]
+        self.db.save(xid, self.session_db[xid])
 
     def close(self):
         pass
 
-    def _add_session(self, id, info):
-        self.session[id] = info
-        self.session_db[id] = info.sxpr()
-        self.sync_session(id)
+    def _add_session(self, xid, info):
+        self.session[xid] = info
+        self.session_db[xid] = info.sxpr()
+        self.sync_session(xid)
         #eserver.inject('xend.migrate.begin', info.sxpr())
 
-    def _delete_session(self, id):
-        #eserver.inject('xend.migrate.end', id)
-        del self.session[id]
-        del self.session_db[id]
-        self.db.delete(id)
+    def _delete_session(self, xid):
+        #eserver.inject('xend.migrate.end', xid)
+        del self.session[xid]
+        del self.session_db[xid]
+        self.db.delete(xid)
 
     def session_ls(self):
         return self.session.keys()
@@ -305,11 +306,11 @@ class XendMigrate:
     def sessions(self):
         return self.session.values()
 
-    def session_get(self, id):
-        return self.session.get(id)
+    def session_get(self, xid):
+        return self.session.get(xid)
 
     def session_begin(self, info):
-        self._add_session(id, info)
+        self._add_session(info.xid, info)
         mcf = XfrdClientFactory(info)
         reactor.connectTCP('localhost', XFRD_PORT, mcf)
         return info
@@ -324,8 +325,8 @@ class XendMigrate:
         """
         # Check dom for existence, not migrating already.
         # Subscribe to migrate notifications (for updating).
-        id = self.nextid()
-        info = XendMigrateInfo(id, dom, host, port)
+        xid = self.nextid()
+        info = XendMigrateInfo(xid, dom, host, port)
         self.session_begin(info)
         return info.deferred
 
@@ -336,8 +337,8 @@ class XendMigrate:
         @param file: destination file
         @return: deferred
         """
-        id = self.nextid()
-        info = XendSaveInfo(id, dom, file)
+        xid = self.nextid()
+        info = XendSaveInfo(xid, dom, file)
         self.session_begin(info)
         return info.deferred
 
index 9fe5def1bafd891d77ab0929f42b21b34ac7d8fd..d0f73e5b20289b9c58f2895a5503e1ba8e918e6d 100644 (file)
@@ -66,6 +66,8 @@ int xen_domain_snd(Conn *xend, IOStream *io, uint32_t dom, char *vmconfig, int v
         dprintf("> k=%d n=%d\n", k, n);
     }
     
+    dom = 99;
+    err = xfr_vm_suspend(xend, dom);
   exit:
 #else 
     XcIOContext _ioctxt = {}, *ioctxt = &_ioctxt;
index 26ef7819329727c79f7e7dbe7aa7fd9108cfa254..7f3f63f47d17f3996c8503d50c5c1bae060a2a64 100644 (file)
@@ -558,11 +558,13 @@ int xfr_send_suspend(Conn *conn, uint32_t vmid){
  */
 int xfr_vm_suspend(Conn *xend, uint32_t vmid){
     int err = 0;
+    dprintf("> vmid=%u\n", vmid);
     err = xfr_send_suspend(xend, vmid);
     if(err) goto exit;
     IOStream_flush(xend->out);
     err = xfr_response(xend);
   exit:
+    dprintf("< err=%d\n", err);
     return err;
 }